iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
0
自我挑戰組

非本科之30天Ruby / Rails學習筆記系列 第 2

Day2: 變數(variable)與常數(Constant)

  • 分享至 

  • xImage
  •  

從開班到現在學了兩個月,只知道這兩個東西每天都在用,但要直接解釋出"變數"與"常數"是什麼?還是得稍微轉一下才能夠說明,所以就特別針對這個主題來寫一下吧!

什麼是變數(variable)?

變數在數學上的定義,被用來表示值的一個'符號'(此指數學符號),且這個值可以是指定的或是未被指定的。

但程式中的變數呢?

變數:類似代名詞,有點像某個東西命名,其實就像標籤。這樣講可能很抽象,但可以試著這樣理解:

一個籃子裡面裝了一個值是2(指定),再給籃子一個標籤(變數)命名叫做X, X = 2

當然這個值我們要放什麼型態的資料都可以,這裡只是舉例給它個Integer型態,下篇會來解釋Ruby的型態有哪些。


圖片來源:https://www.complexsql.com/

變數的種類

  • 區域變數(local Variable):定義在方法(method)裡面的變數,只能在method裡使用。
    預設值:沒有
def test
 x = 2
end 

p x #印出2
  • 實體變數(instance variable):
    預設值:nil
    在類別(class)裡通常會有不只一個method,但一般的變數只能在自己的method中取用,故使用實體變數,讓class裡的每個method都可以取用這個變數,且變數的值(value)會根據不同的method儲存不同的value。
    • 另外,實體變數要在class中互相取值前有個先決條件:必須將物件實體化(initialize)之後才能互相使用。
class Cat
  def initialize(item)   #類似’創角色(item)‘的概念
    @item = item
  end
  
  def calculate          #實體方法
    @item * 2            #取用實體變數前面要加'@'
  end
end

kitty = Cat.new(2)
p kitty.calculate        #印出4
  • 類別變數(class variable):
    預設值:沒有
    可以在同一個類別(class)或子類別中共用的變數,所以翻譯成白話文,“實體變數”只能遊走在自己class中的method,而“類別變數”除了可以遊走自己的class之外,還可以去其他的子類別被使用。
class Language
  @@name = 'english' #類別變數前面要加'@@'

  def self.speak     #要做用在類別上,所以要用類別方法
    puts @@name
  end

end

Language.speak       #印出english
  • 全域變數(global variable):
    預設值:nil
    全域變數以$開頭,可以從程式裡的任何地方開始。也因為可以寫在任何地方的特性,故在使用的時候也相對危險。

什麼是常數(Constant)?

一張有寫著名字的標籤,貼在某個東西上面。其中常數本身不帶任何型態,且最重要的一點,在Ruby裡面的常數,第一個英文字母要大寫,這也是為何我在標故意把variable跟Constant的第一個字母做大小寫區別的原因。

另外,常數是可以被修改的

“The secret of success is constancy to purpose.”

– Benjamin Disraeli, British Prime Minister

本文同步發佈於: https://louiswuyj.tw/


上一篇
Day1: 參賽起始文
下一篇
Day3: Ruby世界中的符號(Symbol)是什麼?與字串(String)有什麼差異?
系列文
非本科之30天Ruby / Rails學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言